/**
 * 自动提示框, 用户输入时会自动提示相关信息， 可用于机场 政策id等输入框的自动提示
 * 
 * @requires jQuery / jQuery UI
 * @author haiyu.wang
 * @usage $("#tags").suggest("/URL/FOR/SOURCE", 1, 3)
 * 
 */

$.fn.suggest = function(sourceUrl, minLen, maxLen) {

	var cache = {};
	$(this).autocomplete({
		source : function(request, response) {
			var term = request.term;
			if (term.length > maxLen) {
				response([ "invalid input!!" ]);
				return;
			}
			if (term in cache) {
				response(cache[term]);
				return;
			}

			$.getJSON(sourceUrl, request, function(data, status, xhr) {
				cache[term] = data;
				response(data);
			});
		},
		minLength : minLen,
	});
	return;
};

/**
 * 航线自动提示框, 用户输入时会自动提示相关信息， 可用于airline输入框的自动提示
 * 
 * @requires jQuery / jQuery UI
 * @author haiyu.wang
 * @usage $("#tags").airlineSuggest("/URL/FOR/SOURCE", 1, 3, "hiddenInput")
 * @param hiddenInput
 *            是调用页面的hidden input，该suggest将 航线代码对应的id放到该隐藏input中
 * 
 */

$.fn.airlineSuggest = function(sourceUrl, minLen, maxLen, hiddenInput) {

	var cache = []
	$.getJSON(sourceUrl, {}, function(data, status, xhr) {
		$.each(data, function(i, value) {
			cache.push({
				label : value['airlineNumber'],
				value : value['id']
			});
		});
	});
	$(this).autocomplete({
		source : function(request, response) {
			if (cache.length > 0) {
				var tmp = cache.filter(function(item){return item['label'].toLowerCase().indexOf(request.term.toLowerCase()) != -1});
				
				response(tmp);
				return;
			}
			;

		},
		select : function(event, ui) {
			$(this).val(ui.item.label);
			$("#" + hiddenInput).val(ui.item.value);

			return false;
		},
		minLength : minLen,
	});
	return;
};
